{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gradio 块简介"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Install the Transformers, Datasets, and Evaluate libraries to run this notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install datasets evaluate transformers[sentencepiece]\n",
    "!pip install gradio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gradio as gr\n",
    "\n",
    "\n",
    "def flip_text(x):\n",
    "    return x[::-1]\n",
    "\n",
    "\n",
    "demo = gr.Blocks()\n",
    "\n",
    "with demo:\n",
    "    gr.Markdown(\n",
    "        \"\"\"\n",
    "    # Flip Text!\n",
    "    Start typing below to see the output.\n",
    "    \"\"\"\n",
    "    )\n",
    "    input = gr.Textbox(placeholder=\"Flip this text\")\n",
    "    output = gr.Textbox()\n",
    "\n",
    "    input.change(fn=flip_text, inputs=input, outputs=output)\n",
    "\n",
    "demo.launch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import gradio as gr\n",
    "\n",
    "demo = gr.Blocks()\n",
    "\n",
    "\n",
    "def flip_text(x):\n",
    "    return x[::-1]\n",
    "\n",
    "\n",
    "def flip_image(x):\n",
    "    return np.fliplr(x)\n",
    "\n",
    "\n",
    "with demo:\n",
    "    gr.Markdown(\"Flip text or image files using this demo.\")\n",
    "    with gr.Tabs():\n",
    "        with gr.TabItem(\"Flip Text\"):\n",
    "            with gr.Row():\n",
    "                text_input = gr.Textbox()\n",
    "                text_output = gr.Textbox()\n",
    "            text_button = gr.Button(\"Flip\")\n",
    "        with gr.TabItem(\"Flip Image\"):\n",
    "            with gr.Row():\n",
    "                image_input = gr.Image()\n",
    "                image_output = gr.Image()\n",
    "            image_button = gr.Button(\"Flip\")\n",
    "\n",
    "    text_button.click(flip_text, inputs=text_input, outputs=text_output)\n",
    "    image_button.click(flip_image, inputs=image_input, outputs=image_output)\n",
    "\n",
    "demo.launch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gradio as gr\n",
    "\n",
    "api = gr.Interface.load(\"huggingface/EleutherAI/gpt-j-6B\")\n",
    "\n",
    "\n",
    "def complete_with_gpt(text):\n",
    "    # Use the last 50 characters of the text as context\n",
    "    return text[:-50] + api(text[-50:])\n",
    "\n",
    "\n",
    "with gr.Blocks() as demo:\n",
    "    textbox = gr.Textbox(placeholder=\"Type here and press enter...\", lines=4)\n",
    "    btn = gr.Button(\"Generate\")\n",
    "\n",
    "    btn.click(complete_with_gpt, textbox, textbox)\n",
    "\n",
    "demo.launch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from transformers import pipeline\n",
    "\n",
    "import gradio as gr\n",
    "\n",
    "asr = pipeline(\"automatic-speech-recognition\", \"facebook/wav2vec2-base-960h\")\n",
    "classifier = pipeline(\"text-classification\")\n",
    "\n",
    "\n",
    "def speech_to_text(speech):\n",
    "    text = asr(speech)[\"text\"]\n",
    "    return text\n",
    "\n",
    "\n",
    "def text_to_sentiment(text):\n",
    "    return classifier(text)[0][\"label\"]\n",
    "\n",
    "\n",
    "demo = gr.Blocks()\n",
    "\n",
    "with demo:\n",
    "    audio_file = gr.Audio(type=\"filepath\")\n",
    "    text = gr.Textbox()\n",
    "    label = gr.Label()\n",
    "\n",
    "    b1 = gr.Button(\"Recognize Speech\")\n",
    "    b2 = gr.Button(\"Classify Sentiment\")\n",
    "\n",
    "    b1.click(speech_to_text, inputs=audio_file, outputs=text)\n",
    "    b2.click(text_to_sentiment, inputs=text, outputs=label)\n",
    "\n",
    "demo.launch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gradio as gr\n",
    "\n",
    "\n",
    "def change_textbox(choice):\n",
    "    if choice == \"short\":\n",
    "        return gr.Textbox.update(lines=2, visible=True)\n",
    "    elif choice == \"long\":\n",
    "        return gr.Textbox.update(lines=8, visible=True)\n",
    "    else:\n",
    "        return gr.Textbox.update(visible=False)\n",
    "\n",
    "\n",
    "with gr.Blocks() as block:\n",
    "    radio = gr.Radio(\n",
    "        [\"short\", \"long\", \"none\"], label=\"What kind of essay would you like to write?\"\n",
    "    )\n",
    "    text = gr.Textbox(lines=2, interactive=True)\n",
    "\n",
    "    radio.change(fn=change_textbox, inputs=radio, outputs=text)\n",
    "    block.launch()"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "name": "Gradio 块简介",
   "provenance": []
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
